/*
 * @Author: Creator
 * @Date: 2020-09-21 18:58:56
 * @LastEditors: Creator
 * @LastEditTime: 2020-09-26 11:13:11
 * @Description: 如果拥有错误，请通知我
 */
// 为了方便使用 ， 采用双向链表
// 从文件中提取数据并组成链表的函数随后给出
// 结构体自行修改
#include <stdbool.h>
typedef struct unname
{
    int data;
    struct unname * pre;
    struct unname * next;

} Node;                                                             // 链表 节点 Node                                              // 链表头节点 List
Node* createNode(int data);                                         // 以数据data 创建 节点并返回节点地址
Node* findNode(Node* List,int data);                                // 以数据data 在 List 中 查找 Node 返回节点地址
bool isListEmpty(Node* List);                                       // 判断 List 是否为空，空（1），非空（0）
bool addNode(Node* List);                                           // 在链表 List 末尾增加节点
bool delNode(Node* List,int data);                                  // 以数据data 在 List 中 删除节点
bool insertNode(Node* List,int data,int p);                         // 以数据data 在 List 中 插入一个新节点，p（1） 在后插入，p（0）在前插入
bool cleanList(Node* List);                                         // 释放链表 List
int lenList(Node* List);                                            // 返回List长度
void displayList(Node* List);                                       // 遍历链表并显示数据
// 以上bool函数 成功 返回1，失败 返回0
// 其中insertNode 函数 修改为 插入已经构造好的节点，增加一个参数即可
// 注意 List 本身存储 信息，双向链表不必要使用 哨兵节点
